<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1、创建函数的本质
        // 函数时对代码的一种封装 创建函数存在2种语法 回归到内存角度 不管那种创建方式 本质都是一样的 都是创建一个函数同名变量，将函数相关的代码保存到堆区 函数名称记录堆区的地址
        // 创建数组 是变量存储堆区地址
        let arr = [1,2,3];
        // 赋值式函数 是将一个函数赋值给一个变量 所以每次 代码中写一个函数系统在执行的时候 就会自动的开辟堆空间保存函数代码相关的一些信息
        let fn = function(){}
        // 所以 只要编写了function(){} 就等价于在内存开辟了空间

        // 自调用匿名函数(自己将自己调用起来)
        // 语法：(function(形参列表){函数体代码})(实参列表);
        // 当调用函数 函数名称() 而创建函数的本质就是开辟内存空间得到内存地址
        // function(形参列表){函数体代码} 就是内存地址(0X333) 最后一个
        // (function(形参列表){函数体代码})
        // (0X333)()
        // 作用：可以进行一些初始化的工作 也可以防止变量污染
    </script>
</body>
</html>